#ifndef SHELL_H_
#define SHELL_H_

#include "LowLevelDisk.h"
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <pthread.h>
#include <string>
#include <iostream>
#include "SuperBlock.h"
#include "SystemCall.h"
#include "Inode.h"

using namespace std;

class Shell{
public:
	Shell();
	virtual ~Shell();
	void mainRun();

private:
	void ReadConfigFile(string arg);
	void WriteSuperBlockToDisk();
	void WriteInodesToDisk();
	void UpdateFreeInodeAddrs();
	FILE* _FILE_SYS;
	SuperBlock* _SuperBlock;
	LowLevelDisk* _LowLevelDisk;
	SystemCall* _systemCall;
	void UpdateFreeBlockAddrs();
	void writeRootInode();
};

#endif /*SHELL_H_*/
